home *** CD-ROM | disk | FTP | other *** search
- # Create hierarchical menus for some volumes.
-
- import os
- from Menu import *
- import macfs
- import sys
-
- def main():
- global oldbar
- my_volumes = []
- while 1:
- fss, ok = macfs.GetDirectory()
- if not ok:
- break
- my_volumes.append(fss.as_pathname())
- if not my_volumes:
- return
- oldbar = GetMenuBar()
- ClearMenuBar()
- makevolmenus(my_volumes)
- DrawMenuBar()
-
- def reset():
- oldbar.SetMenuBar()
- DrawMenuBar()
-
- id = 1
- def nextid():
- global id
- nid = id
- id = id+1
- return nid
-
- def makevolmenus(volumes):
- for vol in volumes:
- makevolmenu(vol)
-
- def makevolmenu(vol):
- menu = NewMenu(nextid(), vol)
- adddirectory(menu, vol)
- menu.InsertMenu(0)
-
- def adddirectory(menu, dir, maxdepth = 1):
- print "adddirectory:", `dir`, maxdepth
- files = os.listdir(dir)
- item = 0
- for file in files:
- item = item+1
- menu.AppendMenu('x') # add a dummy string
- menu.SetMenuItemText(item, file) # set the actual text
- fullname = os.path.join(dir, file)
- if os.path.isdir(fullname):
- menu.SetMenuItemText(item, ':' + file + ':') # append colons
- if maxdepth > 0:
- id = nextid()
- submenu = NewMenu(id, fullname)
- adddirectory(submenu, fullname, maxdepth-1)
- submenu.InsertMenu(-1)
- # If the 'Cmd' is 0x1B, then the 'Mark' is the submenu id
- menu.SetItemMark(item, id)
- menu.SetItemCmd(item, 0x1B)
- if not files:
- menu.AppendMenu(':') # dummy item to make it selectable
- return menu
-
- if __name__ == '__main__':
- main()
- sys.exit(1) # To allow the user to interact...
-